/* 
Cf252
John Sparger 3/15/2011

This class derives from BranchingPrimaryGenerator
and populates itself with a source configuration
representative of the major radiations given off
by a Cf-252 source. This radiations are not given
off in any time correlated way.

Other methods may be added. Right now this is 
basically just a specialty constructor for a 
BranchingPrimaryGenerator.

*/

#ifndef CF252_H
#define CF252_H

#include "BranchingPrimaryGenerator.hh"
#include "G4GeneralParticleSource.hh"
class Cf252 : public BranchingPrimaryGenerator
{
public:
	Cf252(G4ThreeVector position);
	virtual ~Cf252();
	void GeneratePrimaryVertex(G4Event* evt);

private:

	G4SingleParticleSource* neutronSource;

	void createAlphaSource();
	void createFissionSource();
	void configureFissionSourceForNeutrons(G4GeneralParticleSource* fs);
	void configureFissionSourceForGammas(G4GeneralParticleSource* fs);
	G4int sampleNeutronNumberDist();

};

#endif